// Agent API 封装
import request from './request.js'

/**
 * 发送消息到Agent
 * @param {Object} params - 请求参数
 * @param {number} params.user_id - 用户ID
 * @param {string} params.message - 用户消息
 * @param {string} [params.session_id] - 会话ID（可选）
 * @returns {Promise} 返回Promise对象
 */
export const sendMessage = async (params) => {
  try {
    const response = await request.post('/agent/chat/', params, {
      timeout: 30000 // 30秒超时
    })
    return response.data
  } catch (error) {
    console.error('发送消息失败:', error)
    throw error
  }
}

/**
 * 获取可用工具列表
 * @returns {Promise} 返回Promise对象
 */
export const getTools = async () => {
  try {
    const response = await request.get('/agent/tools/')
    return response.data
  } catch (error) {
    console.error('获取工具列表失败:', error)
    throw error
  }
}

/**
 * 清除会话记忆
 * @param {Object} params - 请求参数
 * @param {number} params.user_id - 用户ID
 * @param {string} params.session_id - 会话ID
 * @returns {Promise} 返回Promise对象
 */
export const clearMemory = async (params) => {
  try {
    const response = await request.post('/agent/clear-memory/', params)
    return response.data
  } catch (error) {
    console.error('清除记忆失败:', error)
    throw error
  }
}

/**
 * 生成会话ID
 * @returns {string} 返回新的会话ID
 */
export const generateSessionId = () => {
  const timestamp = Date.now()
  const random = Math.random().toString(36).substr(2, 9)
  return `sess_${timestamp}_${random}`
}

/**
 * 格式化工具名称
 * @param {string} name - 工具名称
 * @returns {string} 格式化后的名称
 */
export const formatToolName = (name) => {
  return name
    .replace(/_/g, ' ')
    .replace(/tool/gi, '')
    .trim()
    .split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
    .join(' ')
}

/**
 * 获取当前时间字符串
 * @returns {string} HH:MM 格式的时间
 */
export const getCurrentTime = () => {
  const now = new Date()
  const hours = String(now.getHours()).padStart(2, '0')
  const minutes = String(now.getMinutes()).padStart(2, '0')
  return `${hours}:${minutes}`
}

/**
 * 格式化消息内容（简单的Markdown渲染）
 * @param {string} content - 原始内容
 * @returns {string} HTML格式的内容
 */
export const formatMessage = (content) => {
  let html = content
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
  
  // 换行
  html = html.replace(/\n/g, '<br>')
  
  // 加粗 **text**
  html = html.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>')
  
  // 数字序列
  html = html.replace(/^(\d+\.\s)/gm, '<strong>$1</strong>')
  
  return html
}

